import Vue from "vue";

// 检测是否有权限
// 使用Vue.directive声明自定义指令permission
export const buttonPermissions = Vue.directive("permission", {
  /**
   * inserted：被绑定元素插入父节点时调用
   * el：指令所绑定的元素，可以用来直接操作 DOM
   */
  inserted(el, binding) {
    let buttonKey = binding.value[0];
    // 代表某个元素需要通过权限验证
    if (buttonKey) {
      let key = checkKey(buttonKey);
      if (!key) {
        //没有权限  删除按钮
        el.remove();
      }
    } else {
      throw new Error("缺指令"); // 抛出错误处理
    }
  }
});

Vue.prototype.$permission = val => {
  return checkKey(val);
};

// 检测传入的元素key是否可以显示
function checkKey(key) {
  var currentInfo = JSON.parse(localStorage.getItem("info"));
  // 获取权限数组
  let permissionData = currentInfo.auth ? currentInfo.auth : [];
  //如果传入的元素key不在权限数组里，则不可显示
  let index = permissionData.indexOf(key);
  if (currentInfo.isAdministrator) {
    // 注意： 如果是超级管理员  默认返回的都是true
    return true;
  } else {
    // 不是超级管理员的逻辑
    if (index > -1) {
      return true;
    } else {
      return false;
    }
  }
}
